﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SistemaVarejo.Model;

namespace SistemaVarejo.DAO
{
    class VendaDAO
    {
        public static bool incluir(Venda v)
        {
            VarejoEntities db = SingletonObjectContext.Instance.Context;
            try
            {
                db.Vendas.Add(v);
                db.SaveChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }

        public static Venda ConsultaNome(Venda v)
        {
            VarejoEntities db = SingletonObjectContext.Instance.Context;
            try
            {
                v = db.Vendas.FirstOrDefault(x => x.produto.Equals(v.produto));
                return v;
            }
            catch
            {
                return null;
            }
        }

        public static List<Venda> getAllVendas()
        {
            VarejoEntities db = SingletonObjectContext.Instance.Context;
            List<Venda> v = db.Vendas.ToList();
            return v;
        }

        public static bool ExcluirVenda(Venda v)
        {
            VarejoEntities db = SingletonObjectContext.Instance.Context;
            try
            {
                v = db.Vendas.FirstOrDefault(x => x.Id == v.Id);
                db.Vendas.Remove(v);
                db.SaveChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }


        public static List<Venda> filtraVendedor(Venda v){
            try
            {
                VarejoEntities db = SingletonObjectContext.Instance.Context;
                List<Venda> lista = db.Vendas.Where(x => x.vendedor.Contains(v.vendedor)).ToList();
                return lista;
            }
            catch {
                return null;
            }
        }

        public static List<Venda> filtraCliente(Venda v)
        {
            try
            {
                VarejoEntities db = SingletonObjectContext.Instance.Context;
                List<Venda> lista = db.Vendas.Where(x => x.cliente.Contains(v.cliente)).ToList();
                return lista;
            }
            catch
            {
                return null;
            }
        }

        public static List<Venda> filtraProduto(Venda v)
        {
            try
            {
                VarejoEntities db = SingletonObjectContext.Instance.Context;
                List<Venda> lista = db.Vendas.Where(x => x.produto.Contains(v.produto)).ToList();
                return lista;
            }
            catch
            {
                return null;
            }
        }


        public static List<Venda> filtraData(DateTime dataInicial, DateTime dataFinal)
        {
            try
            {
                VarejoEntities db = SingletonObjectContext.Instance.Context;
                List<Venda> lista = db.Vendas.Where(x => x.dataVenda > dataInicial && x.dataVenda < dataFinal ).ToList();
                return lista;
            }
            catch
            {
                return null;
            }
        }

        public static bool cadastraVariasVendas(List<Venda> v) {

             VarejoEntities db = SingletonObjectContext.Instance.Context;
             try
             {
                 foreach (Venda x in v)
                 {
                     db.Vendas.Add(x);
                     db.SaveChanges();                     
                 }
                 return true;

             }
             catch {
                 return false;
             }

        }




    }
}
